Multipoint Generic Routing Encapsulation (mGRE)


Next Hop Resolution Protocol (NHRP)
    

If we need to create more than one GRE tunnel interface then we use MGRE tunnel interface instead of point to point GRE interface

Why we need NHRP?
    
  
The last new command, ip nhrp map multicast dynamic, allows NHRP to automatically add spoke routers to the multicast NHRP mappings when these spoke routers initiate the mGRE+IPsec tunnel and register their unicast NHRP mappings. This is needed to enable dynamic routing protocols to work over the mGRE+IPsectunnels between hub and spokes. If this command was not available, then the hub router would need to have a separate configuration line for a multicast mapping to each spoke.

Topology
  

Configuration:

At NHS (HUB)
HUB(config)# interface tunnel   <#>
HUB(config-if)# ip address  <tunnel ip><mask>
HUB(config-if)# tunnel source   <physical IP or interface name>
HUB(config-if)# tunnel mode gre multipoint
//Since it is point-to-multipoint tunnel, destination is many. So, instead of mentioning tunnel destination, we have to mention here as multipoint//
HUB(config-if)# tunnel key   <key>
HUB(config-if)# ip nhrp map multicast dynamic
// Dynamically learn destinations from client registrations on hub//
HUB(config-if)# ip nhrp authentication   <authentication key>
HUB(config-if)# ip nhrp network-id <#>

At NHC (SPOKE)

SPOKE(config)# interface tunnel  <#>
SPOKE(config-if)# ip address  <tunnel ip><mask>
SPOKE(config-if)# tunnel source  <physical IP>
SPOKE(config-if)# tunnel mode gre multipoint
SPOKE(config-if)# tunnel key  <key>
SPOKE(config-if)# ip nhrp map multicast  <nbma ip>
SPOKE(config-if)# ip nhrp authentication  <authentication key>
SPOKE(config-if)# ip nhrp network-id <#>
SPOKE(config-if)# ip nhrp nhs  <tunnel IP of the NHS>
SPOKE(config-if)# ip nhrp map  <tunnel IP of the NHS><physical ip of the NHS>

Verification Commands

#show ip nhrp
#show ip nhrp brief
#show ip nhrp detail



R1(config)#interface tunnel 0
R1(config-if)#ip address 172.16.1.1 255.255.255.0
R1(config-if)#tunnel source 10.1.1.1
R1(config-if)#tunnel mode gre multipoint
R1(config-if)#tunnel key 123
R1(config-if)#ip nhrp map multicast dynamic
R1(config-if)#ip nhrp authentication cisco
R1(config-if)#ip nhrp network-id 123
R1(config-if)#exit

R2(config)#interface tunnel 1
R2(config-if)#ip address 172.16.1.2 255.255.255.0
R2(config-if)#tunnel source 20.1.1.1
R2(config-if)#tunnel mode gre multipoint
R2(config-if)#tunnel key 123
R2(config-if)#ip nhrp map multicast 10.1.1.1
R2(config-if)#ip nhrp authentication 123
R2(config-if)#ip nhrp network-id 123
R2(config-if)#ip nhrp nhs 172.16.1.1
R2(config-if)#ip nhrp map 172.16.1.1 10.1.1.1
R2(config-if)#exit

R3(config)#interface tunnel 1
R3(config-if)#ip address 172.16.1.3 255.255.255.0
R3(config-if)#tunnel source 30.1.1.1
R3(config-if)#tunnel mode gre multipoint
R3(config-if)#tunnel key 123
R3(config-if)#ip nhrp map multicast 10.1.1.1
R3(config-if)#ip nhrp authentication 123
R3(config-if)#ip nhrp network-id 123
R3(config-if)#ip nhrp nhs 172.16.1.1
R3(config-if)#ip nhrp map 172.16.1.1 10.1.1.1
R3(config-if)#exit